#JAWSDAYS2021 クラウド大運動会、改めピタゴラスイッチ選手権 (JAWS DAYS 2021枠内)に参加してきた
AWSチームの鈴木(亮)です。
JAWS DAYS 2021枠内で開催されたクラウド大運動会、改めピタゴラスイッチ選手権に参加する機会がありましたので、レポートさせていただきます。
お題
以下のテーマを実現するAWS構成について、発表させていただきました。
-
- DynamoDBにデータを書き込むHTTPエンドポイント
-
- なんでもいいので、S3にデータを書き込む
- 詳細資料
テンプレ構成例
DynamoDB
S3
発表内容
DynamoDB
GETリクエストをCloudFrontで受け付け。 リアルタイムログ解析の仕組みでDynamoDBに登録する仕組みを考えました。
構成図
フロー
- 端末は、DynamoDBに登録するデータをGET引数でCloudFrontに投入
- CloudFrontのリアルタイムログをKinesis DataStreamsに転送、Firehose経由でElastiSearchに格納
- Firehoseのレコード登録をCloudWatchアラームで検出、RDS(Aurora)のSQLを発行するLambdaを メッセージ、キューサービスを利用して起動。
- Aurora は、自身でLambdaを起動、ElastiSearch に登録されたログを回収し、自身のテーブルに追記
- Auroraのテーブル更新内容、データベースアクティビティストリームを利用して、Kinesisファミリーに連携
- Firehose の HTTPエンドポイント出力を利用して、APIGateway 経由で DynamoDBにレコードを登録
S3
AWS Elemental MediaLive の RTMP output機能を利用して、Elemental Media系のサービスとIVSを連携。
IVSの 出力データを Kinesis Video Stream 経由で S3に保存。
最終加工を MediaConvert、Elastic Transcoderで実施する構成を考えました。
構成図
参考リンク
感想
CloudFrontのアクセスログ、ニアリアルタイムで処理するアーキテクチャ、
− CloudFront のリアルタイムログ出力先となる Kinesis DataStreamのシャードを確保する。 − リアルタイム処理系でエラー(取りこぼし)が発生した場合、10分程度の遅延でS3に出力される通常アクセスログ集計でリカバリーする。
とする利用の実現で、スパイクアクセスなどで APIGateway、Lambdaなどのスロットルが課題となる場合に有効かと思われます。
今回の構成図には取り込みませんでしたが、以下のような TimeStream を利用した構成の実用性などについて、もう少し踏み込んで検証を試みてみたいと思います。
S3の課題で利用したMedia系のサービス、普段の業務でも触れる機会の少ないサービスの役割などについて確認できるいい機会となりました。
最後になりましたが、昨年夏のクラウド運動会に引き続き興味深いイベントの企画、参加する機会を頂きありがとうございました。